package cn.hinglo.gameclaw.admin.dao;

import cn.hinglo.gameclaw.data.dbdao.MyMapper;
import cn.hinglo.gameclaw.user.bean.User;
import cn.hinglo.gameclaw.user.bean.UserInfo;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @createTime: 2017/12/29
 * @author: HingLo
 * @description: 用户信息管理
 */
@Repository
public interface UserDao extends MyMapper<UserInfo> {
    /**
     * 查询全部的微信与QQ用户信息
     *
     * @param type  账号类型
     * @param start 开始位置
     * @param num   数量
     * @return 结果集合
     */
    @Select("select u.id,uf.uid,u.type,u.status,u.date,uf.gold,uf.score,give_gold,uf.nike_name,uf.fill_code,uf.header from user as u ,user_info as uf where u.id=uf.user_id and type=#{type} limit #{start},#{num}")
    List<UserInfo> listUserDao(@Param("type") int type, @Param("start") int start, @Param("num") int num);

    /**
     * 查询管理员的信息
     *
     * @param admin 管理员类型
     * @return 查询结果
     */
    @Select("select * from user where type=#{admin}")
    List<User> listAdminDao(int admin);

    /**
     * 统计总数
     *
     * @param type 账号类型
     * @return 统计的数量
     */
    @Select("select count(id) from user where type=#{type}")
    int countUserDao(Integer type);

    /**
     * 通过id，查询
     *
     * @param id 用户的Id
     * @return 用户的信息集合
     */
    @Select(" select u.id,uf.uid,u.type,u.status,u.date,uf.gold,uf.score,give_gold,uf.nike_name,uf.fill_code from user as u,user_info as uf where u.id=uf.user_id and u.id  LIKE '%' #{id} '%'")
    List<UserInfo> findByIdUserDao(@Param("id") String id);


    /**
     * 通过uid,
     *
     * @param id 通过展示的UId来查询用户信息
     * @return 返回用户信息集合
     */
    @Select(" select u.id,uf.uid,u.type,u.status,u.date,uf.gold,uf.score,uf.nike_name,give_gold,uf.fill_code from user as u,user_info as uf where u.id=uf.user_id and uf.uid  LIKE '%' #{id} '%'")
    List<UserInfo> findByUIdUserDao(@Param("id") String id);

    /**
     * 通过name查询
     *
     * @param id 用户的唯一Id
     * @return 用户信息
     */
    @Select(" select u.id,uf.uid,u.type,u.status,u.date,uf.gold,give_gold,uf.score,uf.nike_name,uf.fill_code from user as u,user_info as uf where u.id=uf.user_id and uf.nike_name LIKE '%' #{id} '%'")
    List<UserInfo> findByNameUserDao(@Param("id") String id);
}
